class BibliotecaFuncionalTestsFunctionalTests extends functionaltestplugin.FunctionalTestCase {

    private String livrocreate = "http://localhost:9090/SPL_V3/livro/create"
    private String exemplarcreate = "http://localhost:9090/SPL_V3/exemplar/create"
    private String relatoriocreate = "http://localhost:9090/SPL_V3/relatorioTecnico/create"
    private String consultarlivro = "http://localhost:9090/SPL_V3/livro/search"
    private String consultarRelatorio = "http://localhost:9090/SPL_V3/relatorioTecnico/search"
    private String realizarEmprestimo = "http://localhost:9090/SPL_V3/emprestimo/create"
    private String removerEmprestimo = "http://localhost:9090/SPL_V3/emprestimo/list"

    void testeCreateLivro(){
        get(this.livrocreate)
        assertStatus 200
	//redirectEnabled = false
        form {
                        isbn = "123456"
			titulo = "TESTING WITH GRAILS"
			autores = "Jonathan Brilhante"
			ano = "2010"
			editora = "SPL-Test"
			click "Cadastrar"
		}
		assertContentContains("Livro criado com sucesso.")
    }

    void testeCreateLivroSemTitulo(){
           get(this.livrocreate)
        assertStatus 200
	//redirectEnabled = false
        form {
			isbn = "123456"
                        autores = "Jonathan Brilhante"
			ano = "2010"
			editora = "SPL-Test"
			click "Cadastrar"
		}
		assertContentContains("O campo titulo nao pode ser vazio.")
    }

    void testeCreateLivroSemEditora(){
         get(this.livrocreate)
        assertStatus 200
	//redirectEnabled = false
        form {
                        isbn = "123456"
                        titulo = "TESTING WITH GRAILS"
			autores = "Jonathan Brilhante"
			ano = "2010"
			
			click "Cadastrar"
		}
		assertContentContains("O campo editora nao pode ser vazio.")
    }

        void testeCreateLivroSemAutores(){
         get(this.livrocreate)
        assertStatus 200
	//redirectEnabled = false
        form {
                        isbn = "123456"
                        titulo = "TESTING WITH GRAILS"
			ano = "2010"
                        editora = "SPL-Test"
			click "Cadastrar"
		}
		assertContentContains("O campo autores nao pode ser vazio.")
    }

    void testeCreateLivroComMesmoTitulo(){
         get(this.livrocreate)
        assertStatus 200
	//redirectEnabled = false
        form {
                        isbn = "123456789"
                        titulo = "TESTING WITH GRAILS"
                        autores = "Jonathan Brilhante2"
			ano = "2010"
			editora = "SPL-Test2"
			click "Cadastrar"
		}
		assertContentContains("Este livro ja foi cadastrado.")
    }
    void testeCreateExemplar(){
        get(this.exemplarcreate)
        assertStatus 200
        form{
            livro = "TESTING WITH GRAILS"
            indice = "1"
            fornecedor = "GMF"
            click "Cadastrar"
        }
        assertContentContains("Exemplar criado com sucesso.")
    }

    void testeCreateExemplarSemLivro(){
        get(this.exemplarcreate)
        assertStatus 200
        form{
            livro = ""
            indice = "1"
            fornecedor = "GMF"
            click "Cadastrar"
        }
        assertContentContains("O livro associado a este exemplar nao pode ser vazio.")
    }

       void testeCreateExemplarSemIndice(){
        get(this.exemplarcreate)
        assertStatus 200
        form{
            livro = "TESTING WITH GRAILS"
            fornecedor = "GMF"
            click "Cadastrar"
        }
        assertContentContains("O indice nao pode ser vazio.")
    }

       void testeCreateExemplarFornecedor(){
        get(this.exemplarcreate)
        assertStatus 200
        form{
            livro = "TESTING WITH GRAILS"
            indice = "1"
            click "Cadastrar"
        }
        assertContentContains("O fornecedor nao pode ser vazio.")
    }

        void testeCreateExemplarComMesmoIndice(){
        get(this.exemplarcreate)
        assertStatus 200
        form{
            livro = "TESTING WITH GRAILS"
            indice = "1"
            fornecedor = "GMF"
            click "Cadastrar"
        }
        assertContentContains("Este indice ja foi cadastrado.")
    }

    void testeCreateRelatorioTecnico(){
        get(this.relatoriocreate)
        assertStatus 200
        form{
            titulo = "MEURELATORIO"
	    autores = "Jonathan Brilhante"
	    ano = "2010"
	    novo_tipo = "relatorio"
	    click "Cadastrar"
        }
        assertContentContains("RelatorioTecnico criado com sucesso.")
    }
    void testeCreateRelatorioTecnicoSemTitulo(){
        get(this.relatoriocreate)
        assertStatus 200
        form{
            autores = "Jonathan Brilhante"
	    ano = "2010"
	    novo_tipo = "relatorio"
	    click "Cadastrar"
        }
        assertContentContains("O campo titulo nao pode ser vazio.")
    }
    void testeCreateRelatorioTecnicoSemAutores(){
        get(this.relatoriocreate)
        assertStatus 200
        form{
            titulo = "relatorio grails test"
	    ano = "2010"
	    novo_tipo = "relatorio"
	    click "Cadastrar"
        }
        assertContentContains("O campo autores nao pode ser vazio.")
    }

    void testeConsultarLivro(){
        get(this.consultarlivro)
        assertStatus 200
		redirectEnabled = false
		form {
			titulo = "TEST"
			click "Consultar"
		}
                click "Ver mais"
                assertTitleContains "Show"
    }

        void testeConsultarLivroAvançado(){
        get(this.consultarlivro)
		assertStatus 200
		redirectEnabled = false
                click "Consulta Avancada"
                click "search"
                click "Ver mais"
                assertTitleContains "Show"
    }

    void testeRemoverLivro(){
        get(this.consultarlivro)
        assertStatus 200
		redirectEnabled = false
		form {
			titulo = "TEST"
			click "Consultar"
		}
                click "Ver mais"
                form{
                click "Delete"
                }
                followRedirect()
                assertContentContains("dele")
    }

    void testeConsultarRelatorio(){
        get(this.consultarRelatorio)
        assertStatus 200
	redirectEnabled = false
	form {
		titulo = "MEURELATORIO"
		click "Consultar"
	}
        click "Ver mais"
        assertTitleContains "Show"
    }

    void testeConsultarRelatorioAvançado(){
        get(this.consultarRelatorio)
		assertStatus 200
		redirectEnabled = false
                click "Consulta Avancada de Relatorio Tecnico"
                click "search"
                click "Ver mais"
                assertTitleContains "Show"
    }

      
        void testeRealizarEmprestimo(){
            get(this.realizarEmprestimo)
            assertStatus 200
            redirectEnabled = false
            form{
                itens = "MEURELATORIO"
                login = "administrador"
                click "create"
            }
           //assertTitleContains "Save"
           followRedirect()
           assertContentContains("Emprestimo criado com sucesso.")
        }
/*
    void testeRemoverEmprestimo(){
        get(this.removerEmprestimo)
        assertStatus 200
        redirectEnabled = false
        form{
            click "Ver mais"
        }
        assertTitleContains "Show"
        click "Excluir Emprestimo"
    } */

     void testeRemoverRelatorio(){
        get(this.consultarRelatorio)
        assertStatus 200
		redirectEnabled = false
		form {
			titulo = "MEURELATORIO"
			click "Consultar"
		}
                click "Ver mais"
                form{
                click "Delete"
                }
                followRedirect()
                assertContentContains("dele")
    }
}
